2.1基本組譯器功能
2.1.1簡易SIC組譯器
組譯器的兩階段處理
- 1.掃描原始程序中的標記,並計算位置
- 2.執行前述的轉換動作
組譯器指引(虛擬指令)
- 1.用於只是組譯器該如何處理原始程式,而不會轉換成指令
- 2.EX:BYTE,WORD是轉換位元or字組指令,RESB,RESW保留記憶體空間
object code
一個機器碼包含標頭(Header),本文(text),結束(end)的紀錄
- 標頭紀錄:
- 欄1 H
- 欄2-7 程式名稱
- 欄8-13 目的程式的起始位置
- 欄14-19 目的程式的長度(16進值)
- 本文紀錄:
- 欄1 T
- 欄2-7 目的碼的起始位置
- 欄8-9 目的碼的長度
- 欄10-69 目的碼
- 結束紀錄:
2.1.2組譯器演算法與資料結構
資料結構
OPTAB(運算碼表)
- 內容:
- 第一階段:
- 驗證原始碼是否正確
- 找出指令長度來增加LOCCTR值
- 第二階段:
LOCCTR(位置計數器)
- 協助位址的分配
- 初始值即為start
- 處理完每一行的敘述後,長度加到LOCCTR中
SYMTAB(符號表)
- 內容:
- 紀錄名稱
- 紀錄位址
- 錯誤旗標
- 資料或指令的其他資訊(資料型態或長度)
- 第一階段:
- 第二階段: